function callFrame() {
	this.method;
	this.operandStack = [];
	this.localVariables = [];
	this.currentPc = 0;
	this.codelength;

	this.execute = function() {
		pc = 0;
		returnValue = null;
		//alert("in execution");
		currentFrame = this;
		currentFrame.codelength = currentFrame.method.attributes[0].code_length;
		while(pc < currentFrame.codelength) {
			currentFrame.executeOpcode();
		}
		
		//if(returnValue != null) {
		//	callStack[callStack.length-2].operandStack.push(returnValue);
		//}
	}

	this.executeOpcode = function() {
		if(debugMode == 1) {
			currentFrame.showOperandStack();	
			//alert("pc: " + pc + "\ncode: " + currentFrame.method.attributes[0].code[pc]);	
		}
		opc[currentFrame.method.attributes[0].code[pc]]();
		pc++;
		//alert("After process, pc: "+pc+"\n code:"+currentFrame.method.attributes[0].code[pc]);
	}

	this.showOperandStack = function() {
		//alert("operandStack: "+currentFrame.operandStack.toString());
	}
}
